home *** CD-ROM | disk | FTP | other *** search
-
- WD1770/2/3 data (disk controller chip)
- ======================================
-
- This file contains essential data on programming the floppy disk controller
- chip used in BBC B+, Master, BBC B with Opus DDOS and some Archimedes
- computers. Please note that a lot of the information in the relevent data
- sheet has had to be cut out.
-
-
- Register summary
- ================
-
- Address offset Contains on read on write
- ------------------------------------------------------
- 0 Status Command
- 1 ------- Track --------
- 2 ------- Sector -------
- 3 ------- Data ---------
-
- Command summary
- ===============
-
- Command register bits
- Type Command 7 6 5 4 3 2 1 0
- -------------------------------------------------------
- I Restore 0 0 0 0 h v r1 r0
- I Seek 0 0 0 1 h v r1 r0
- I Step 0 0 1 u h v r1 r0
- I Step in 0 1 0 u h v r1 r0
- I Step out 0 1 1 u h v r1 r0
- II Read sector 1 0 0 m h/s e 0/c 0
- II Write sector 1 0 1 m h/s e p/c a
- III Read address 1 1 0 0 h/0 e 0 0
- III Read track 1 1 1 0 h/0 e 0 0
- III Write track 1 1 1 1 h/0 e p/0 0
- IV Force interrupt 1 1 0 1 i3 i2 i1 i0
-
- Where :
- h = motor spin-up sequence disable flag. (1770/2 only)
- = 0 Enable spin-up sequence if motor is currently not running.
- = 1 Disable spin-up sequence.
-
- v = verify on destination flag. (all)
- = 0 Do not verify
- = 1 Verify (adds a 30 msec head settling time onto command execution)
-
- r1,r0 = head track-to-track stepping rates. (all)
- r1 r0 1770/3 1772
- 0 0 6 ms 6 ms
- 0 1 12 ms 12 ms
- 1 0 20 ms 2 ms
- 1 1 30 ms 3 ms
-
- u = update track register. (all)
- = 0 Do not update track register
- = 1 Update track register.
-
- m = multiple sector read/write flag. (all)
- = 0 read/write 1 sector only.
- = 1 read/write sectors on current track until command is interrupted
- using the FORCE INTERRUPT command.
-
- s = side compare flag (1773 only)
- = 0 Compare for side 0.
- = 1 Compare for side 1.
-
- a0= data address mark type. (all)
- = 0 Write normal data mark.
- = 1 Write deleted data mark.
-
- e = Head settling delay. (all)
- = 0 No delay
- = 1 Add 30 ms delay (15 ms on 1772)
-
- c = Side compare flag. (1773 only)
- = 0 Disable side compare.
- = 1 Enable side compare.
- For all type III commands bit 1 must be 0
-
- p = Write precompensation flag. (all)
- = 0 Enable write precompensation.
- = 1 Disable write precompensation.
-
- i3= 1, immediate interrupt. (all)
- i2= 1, interrupt on every index pulse. (all)
- i1= 1, Ready to not ready transition. (1773 only)
- i0= 1, Not ready to ready transition. (1773 only)
-
-
- Data formats:
- =============
-
- Read address.
-
- Byte Contains
- ---------------------------
- 0 Track number
- 1 Side number
- 2 Sector number
- 3 Sector length
- 4 CRC check byte (1)
- 5 CRC check byte (2)
-
- Write track (format a track)
-
- Double density formats:
- =======================
-
- Recommended | Acorn ADFS |
- format | (master 128) |
- No. of Hex value | No. of Hex value |
- bytes to write | bytes to write | Info
- -----------------------+----------------------+-------------------------------
- 60 4E | 60 4E | Post-index Gap (Gaps 1+2)
- / 12 00 | / 12 00 | Pll lock-up time
- | 3 F5 | | 3 F5 | 3 synchronisation bytes
- | 1 FE | | 1 FE | ID address mark
- | 1 | | 1 | Track number
- | 1 | | 1 | Side number
- | 1 | | 1 | Sector number
- | 1 | | 1 01 | Sector length
- | 1 F7 | | 1 F7 | Writes 2 CRC bytes
- | 22 4E | | 22 4E | Sector ID / Data Gap (Gap 3a)
- | 12 00 | | 12 00 | /Write splice time (Gap 3b)
- | | | | \Pll lock-up time
- | 3 F5 | | 3 F5 | 3 synchronisation bytes
- | 1 FB | | 1 FB | Data address mark
- | n | | 256 (5A on format)| Data (number of bytes depends
- | | | | on the sector length)
- | 1 F7 | | 1 F7 | Writes 2 CRC bytes
- \ 24 4E | \ 43 4E | Post Data Gap (Gap 4)
- 668 approx 4E | 4E | Runout Gap. Write until
- | | next index hole.
-
- Single density formats:
- =======================
-
- Recommended | Acorn 1770 DFS 2.24 |
- format | (master 128) |
- No. of Hex value | No. of Hex value |
- bytes to write | bytes to write | Info
- ----------------------+----------------------+--------------------------------
- 40 FF | 40 FF | Post index Gap (Gaps 1+2)
- / 6 00 | / 6 00 | Pll lock-up
- | | | 3 F5 | 3 synchronisation bytes
- | 1 FE | | 1 FE | ID address mark
- | 1 | | 1 | Track number
- | 1 | | 1 | Side number
- | 1 | | 1 | Sector number
- | 1 | | 1 01 | Sector length
- | 1 F7 | | 1 F7 | Writes 2 CRC bytes
- | 11 FF | | 10 4E | Sector ID / Data Gap (Gap 3a)
- | 6 00 | | 4 00 | Pll lock-up (Gap 3b)
- | | | 3 F5 | 3 synchronisation bytes
- | 1 FB | | 1 FB/F8 | Data address mark
- | n | | 256 (5A on format)| Data
- | 1 F7 | | 1 F7 | Writes 2 CRC bytes
- \ 10 FF | \ 10 FF | Post data Gap (Gap 4)
- 369 approx FF | FF | Runout Gap. Write until
- | | next index hole.
-
- Write the bracketed area the following times:
-
- Sector length Sector size (n) Number of times to write
- -------------------------------------------------------------
- 00 128 ?
- 01 256 16 (ADFS 16, DFS 10)
- 02 512 ?
- 03 1024 5
-
- Notes
-
- 1) The gaps can be altered to a minimum of:
- Single density Double density
- Gap 1 16 32
- Gap 2 11 22
- Gap 3a 10 24
- Gap 3b 4 8
- Gap 4 10 16
-
- 2) The reliability depends on the gaps. For highest reliability,
- use the recomended formats.
-
- 3) The 177X will not automatically detect which density it is use.
- There is usually a separate register or a hard link to set up the
- denstiy. This applies to all commands.
-
- Status register.
- ================
-
- The meaning of the bits in the status register depends on which type of
- command is currently executing.
-
- Bit | Type I | Type II | Type III | Comments
- ----+------------------+---------------+---------------+-------------------
- 7 | Motor on | ---------- Motor on --------- | / If bit 3 is
- 6 | Not used. | -- Disk is write protected. - | | set then:
- 5 | Motor spin-up | Data type : 0 = normal. | | If bit 4 is
- | completed. | 1 = deleted. | | set, the error
- 4 | Record not found | ----- Record not found ------ | / is in the ID
- 3 | CRC error. | --------- CRC error --------- |< field. If bit 4
- 2 | Not track 0 | ------ Lost data / byte ----- | \ is clear, the
- 1 | Data Request | -------- Data request ------- | | error is in
- 0 | Busy | ------------ Busy ----------- | \ the data field.
-
-
- Note that after a reset, some 177X's say that they are busy, when they are
- idle. This happens when you reset the chip while a command is in progress.
-
-
- Read/Write delay times
- ======================
-
- There are certain delay times that must be taken into account:
- Operation Next operation Delay required
- Single Double density
- ----------------------------------------------------------------
- Write command / Read busy bit 48 usec 24 usec
- register \ Read status bits 1-7 64 usec 32 usec
- Write any reg Read same register 32 usec 16 usec
-
-
- Drive control register
- ======================
-
- This controls various functions that the 177X is unable to:
-
- Master drive control:
- Bit Meaning
- -----------------
- 7,6 Not used.
- 5 Double density select (0 = double, 1 = single).
- 4 Side select (0 = side 0, 1 = side 1).
- 3 Drive select 2.
- 2 Reset drive controller chip.
- 1 Drive select 1.
- 0 Drive select 0.
-
- B+ drive control:
- Bit Meaning
- -----------------
- 7,6 Not used.
- 5 Reset drive controller chip.
- 4 Interrupt ?
- 3 Double density select (0 = double, 1 = single).
- 2 Side select (0 = side 0, 1 = side 1).
- 1 Drive select 1.
- 0 Drive select 0.
-
- Opus double density board on BBC:
- Bit Meaning
- -----------------
- 7 Not used.
- 6 Density select (0 = single, 1 = double).
- 5-2 Not used.
- 1 Side select (0 = side 0, 1 = side 1).
- 0 Drive select (0 = drive 0, 1 = drive 1).
-
- Note that only 1 drive select bit line should be set at a time.
-
- Addresses of registers:
- =======================
-
- Computer Location of disk chip & chip Location of drive control
- ---------------------------------------------------------------------
- BBC B with Opus &FE80 - &FE83 WD1770 &FE84
- BBC B+ &FE84 - &FE87 WD1770 &FE80
- BBC Master &FE28 - &FE2B WD1770 &FE24
- Archimedes ? WD1772 ?
-
- I am aware that some archimedes used the WD1772 is used, but if anyone
- knows the addresses, I will be happy to put them in.
-
-
-